<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        // 作业 --- 封装函数
        //   1 判断一个数是不是质数(3种方法   flag   /   break  /  return)


        // 假设法
        
        // 举个例子   判断一个数是不是偶数
        // var n = 6 ;
        // //    假设是的
        // var flag = true ;
        // //    
        // if(n % 2 === 1) {
        //     // 说明就不是
        //     flag = false ;
        // }

        // document.write(flag) ;



        // 方法1 ： 判断是不是质数，假设是的 ， 去验证(去找不是证据) 
        
        function isZhi(n) {
            // // 判断一个数
            // var n = 15 ;   // 这里把数字写死了   所以把他拿出去，当作形参
            // 假设是的
            var flag = true ;
            // 叛逆  --- 你觉得是   我觉得不是   拿出证据,需要一条一条的找(9%2 9%3 9%4 ...)    只要能被整除
            for(var i = 2 ; i < n ; i++) {
                if(n % i === 0) {
                    // 说明能被整除
                    // flag = false ;
                    flag = !flag ;

                    // 优化  --- 主要找到一个不满足的条件   就没必要继续找下去
                    break ;
                }
            }

            // 看flag的值就可以了
            // document.write(flag) ;
            // 程序只需要得出结果即可，结果可以在其他的地方使用
            return flag ;
        }



        // 理论上说是可以的   实践的时候，发现很麻烦 ， 所有证据必须全部找完，代码写不出来 
        // var flag = false ;
        // if(n % 2 !== 0 && n % 3 !== 0 && n $ 4 !== 0 && ...) {
        //     flag = true ;
        // }





        // 方法二:  循环是否提前结束

        // 举个例子
        // for(var i = 0 ; i < 10 ; i++) {}

        // 此时循环正常结束时   也就是条件不满足就结束  i的值是10

        // 如果循环提前结束了   i一定小于10


        // 方法二：一个条件一个条件的去找  n%2  n%3   n%4  ...   只要找到了一个能被整除的   循环就可以提前结束

        // var n = 9 ; 
        // for(var i = 2 ; i < n ; i++) {
        //     if(n % i=== 0) {
        //         break;
        //     }
        //     // 根据i的值进行判断 ， i=n 说明正常结束了，说明没有被任何数整除  说明是质数
        //     if(i === n) {
        //         shi 
        //     }
        //     else {
        //         不是
        //     }
        // }

        // function isZhi(n) {
           
        //     for(var i = 2 ; i < n ; i++) {
        //         if(n % i=== 0) {
        //             // 只要能被其中一个数整除就不需要继续找了
        //             break;
        //         }
        
        //     }
        //     // 根据i的值进行判断 ， i=n 说明正常结束了，说明没有被任何数整除  说明是质数
        //     if(i === n) {
        //         return true
        //     }
        //     else {
        //         return false 
        //     }
        // }


        // function isZhi(n) {
           
        //    for(var i = 2 ; i < n ; i++) {
        //        if(n % i=== 0) {
        //            // 只要能被其中一个数整除就不需要继续找了
        //            break;
        //        }
           
        //    }
        //     // 根据i的值进行判断 ， i=n 说明正常结束了，说明没有被任何数整除  说明是质数
        //     //    return i === n ? true : false ;
        //     // var res = i === n  ;
        //     // return res ;
        //     return i === n ;
        // }









        // 方法3 ： 方法2的另一个版本
        function isZhi(n) {
           
           for(var i = 2 ; i < n ; i++) {
               if(n % i=== 0) {
                   // 只要能被其中一个数整除就不需要继续找了  说明就不是质数
                   return false ;
               }
           
           }

            //  循环如果正常结束了 , 就说明是质数
            return true ;  
           
        }


     



















        //   2 计算 n的阶乘   1*2*3*4*..n  
        //   3 99乘法表  --- 带有样式  p     没有参数，没有返回值
        //   4 随机数的封装
        //   5 简易计算器   jiSuanQi(a , b , fuHao) 
        //   6 封装n位随机验证码   randCode(n)
        //   7 求两个数的最大公约数
        //   8 求两个数的最小公倍数
        //   9 某个公司采用公用电话传递数据，数据是四位的整数，在传递过程中是加密的，加密规则如下：每位数字都加上5,然后用除以10的余数代替该数字，再将第一位和第四位交换，第二位和第三位交换，请编写一个函数，传入原文，输出密文
        //   10 封装函数：计算：当传入n为偶数时，调用函数求1/2 + 1/4 + ... + 1/n ；当传入n为奇数时，调用函数求1 + 1/3 + ... + 1/n 




    </script>
    
</body>
</html>